package main

import (
	"fmt"
	"os"
	"os/signal"
	"syscall"

	"github.com/desertbit/grumble"
)

func main() {
	// 创建应用
	app := grumble.New(&grumble.Config{
		Name:        "todo",
		Description: "命令行待办事项管理器",
		Flags: func(f *grumble.Flags) {
			f.Bool("v", "verbose", false, "显示详细信息")
		},
	})
	app.SetPrompt("todo > ")

	// 添加命令
	app.AddCommand(&grumble.Command{
		Name: "add",
		Help: "添加新的待办事项",
		Args: func(a *grumble.Args) {
			a.String("task", "待办事项内容")
		},
		Run: func(c *grumble.Context) error {
			task := c.Args.String("task")
			verbose := c.Flags.Bool("verbose")

			fmt.Printf("添加待办事项: %s\n", task)
			if verbose {
				fmt.Println("[详细] 任务已添加到数据库")
			}
			return nil
		},
	})

	go func() {
		sigChan := make(chan os.Signal, 1)
		signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
		<-sigChan

		fmt.Println("\n收到Ctrl+C信号，正在退出...")

		// 退出程序
		os.Exit(0)
	}()

	// 运行应用
	err := app.Run()
	if err != nil {
		fmt.Println("错误:", err)
	}
}
